드디어 삼성 노트북 펜 15인치가 도착해서 세팅을 시작했다. 목표는 맥/리눅스에 근접할 정도로 편리한 개발 환경을 구축하는 것. 필요한 개발 환경은 대충 다음과 같은 것들이다.
- 파이썬
- node.js 기반의 프론트엔드 도구
- 안드로이드 앱
- electron 기반의 데스크탑 앱
- 윈도우 앱 automation (pywinauto 등으로)
- 머신러닝 (1~2년 후에 필요)
- iOS? (가능한 방법이 있을까?)
이 중에 가장 중요한 것은 물론 파이썬이다. 파이썬 개발 환경 구축을 위해서는 다음과 같은 것들이 필요하다.
- git, ssh
- python >= 3.6
- pycharm에서 project interpreter 지정이 가능할 것
- 파이썬 패키지에서 사용하는 네이티브 라이브러리들, postgresql이나 rabbitmq 등 posix 기반에서 개발된 소프트웨어들
- 좋은 커맨드라인 인터페이스
파이썬 다음으로 중요한 것은 node.js 기반 도구들인데, 파이썬과 요구사항은 비슷하다. 이런 요구사항을 소화하기 위해 가능한 옵션은 다음과 같은 것들이 있다.
- VirtualBox
- cygwin
- Windows 네이티브 + 커맨드라인 보조 툴(mingw 등) + Visual Studio(C/C++ Compiler)
- Windows Subsystem for Linux
내가 이상적이라고 생각하는 방안은 cygwin이다. 하지만 cygwin은 최신 패키지 지원이 한 박자 늦고 지원되는 패키지 수가 적다. 어차피 Window 네이티브와의 조합이 필요하다면 굳이 파이썬을 cygwin으로 설치해서 얻는 이득이 별로 없다. 그래서 cygwin은 시도해보지 않는다. VirtualBox는 아무리 좋아졌다고는 하나 여전히 느리고 스위칭이 불편하기 때문에 다른 모든 방법에 나쁘다고 판단할 경우에만 선택할 것이다. Windows 네이티브는 이미 여러 번 실험해봐서 가능하고 약간 불편하지만 그럭저럭 쓸만하다는 사실을 알고 있는 상태다. WSL은 bash.exe를 통해서만 리눅스 바이너리를 실행할 수 있다는 치명적인 단점(이것 때문에 PyCharm에서 직접 local interpreter로 지정할 수 없다)이 있지만 그 단점은 일부분 회피 가능하고, 윈도우 개발툴로 편집하고 리눅스 서버로 돌아가는 상황을 VirtualBox보다 좀더 매끄럽게 연출할 수 있다. 그래서 WSL 세팅을 먼저 시작해보았다.
Windows Subsystem for Linux
WSL의 가장 큰 장점은 무거운 가상머신 없이 리눅스와 윈도우의 상호운용이 가능하다는 것이다. VirtualBox 같은 가상머신이 들어가면 SSH와 공유 폴더를 통해 상호운용을 해야 하는데, 참을 만한 정도이기는 해도 개발자는 이 정도 편리함에 만족해서는 안된다고 생각한다. 그래서 윈도우 native를 이용할 때의 장점을 하나도 잃지 않으면서 Linux의 장점도 같이 살릴 방법을 찾기로 했다.
WSL을 그냥 사용하는 방법은 간단하다. WSL을 활성화하고 ubuntu를 설치해서 ubuntu를 실행하면 bash.exe가 실행된다. 이 bash.exe 안에서는 완전한 linux처럼 쓸 수 있다. 초기에는 패키지가 다소 부족했지만이제 개발에 필요한 대부분의 우분투 패키지를 지원한다. X 서버가 지원되지 않지만 GUI 도구는 윈도우를 쓸 것이기 때문에 별 문제 없다. 쉘도 bash니까 충분히 편리하다. 쉘을 띄우는 터미널은 여전히 cmd 기반이지만 예전과 달리 창 크기 조절도 되고 별 문제는 없다. 여기까지는 OK.
가장 결정적인 문제는 PyCharm과 같은 IDE에서 연동하는 것이다. WSL에서 sshd를 띄우고 remote로 사용하는 것은 원래부터 가능하다.
Windows 네이티브 개발환경